<?php

/**
 * Angebote Controller
 */
class AngebotController extends ControllerBase
{
	/**
	 * Initialisiert den Controller
	 */
	public function Init()
	{
		$this->SetAuthRequired(true);
	}

	/**
	 * Index Methode wird aufgerufen wenn Index
	 * oder keine Action angefordert wurde.
	 */
	public function Index()
	{
		$res = new ViewResponse();
		
		$dao = new DAO_Angebote();
		
		$this->Angebote = $dao->Laden();
		
		if (count($this->Angebote) > 0)
			$res->view = $this->View("angebot_index");
		else
			$res->view = $this->View("no_data", "Es sind keine Angebote vorhanden.");
			
		return $res;
	}
	
	/**
	 * Verarbeitet die Detailansicht für ein Angebot
	 * @return ViewResponse gibt das Response Objekt für die Ausgabe zurück
	 */
	public function Detail()
	{
		$res = new ViewResponse();
		
		// DAO instanziieren
		$katdao = new DAO_Angebote();
		
		if (isset($_REQUEST["a_id"]) && $_REQUEST["a_id"] > 0)
		{
			$prodDao = new DAO_Produkt();
			// Angebot laden
			$this->Angebot = $katdao->AngebotLaden($_REQUEST["a_id"]);
			$this->Produkte = $prodDao->LadeProduktefuerAngebot($_REQUEST["a_id"]);
			$this->AvailableProducts = $prodDao->LoadAvailableProducts($_REQUEST["a_id"]);
		}
		else
		{
			// Neues Angebot erstellen
			$this->Angebot = new Kategorie();
		}
		
		if ($this->Angebot != null)
		{
			$res->view = $this->View("angebot_detail");
		}
		else
		{
			$res->view = $this->View("no_data", "Angebot wurde nicht gefunden.");
		}
		
		return $res;
	}
	
	
	// Speichert das Angebot
	public function SaveAngebot()
	{
		$res = new ViewResponse();
		$angebotId = 0;
		
		try
		{
			$ang = Angebot::CreateFromRequest();
			
			$dao = new DAO_Angebote();
			$dao->Speichern($ang);
			
			if ($dao->HasErrors())
				$res->error = join("<br/>", $dao->GetErrors());
			else
				$this->SaveInfo = "Erfolgreich Gespeichert";
				
			$angebotId = $ang->ID;
		}
		catch (Exception $ex)
		{
			$res->error = "Fehler beim Speichern des Angebot<br/>" . $ex;
		}
		
		$_REQUEST["a_id"] = $angebotId;
		return $this->Detail();
	}
	
	public function AddProdukt()
	{
		$res = new ViewResponse();
		
		if (!isset($_REQUEST["a_id"]) && $_REQUEST["a_id"] < 1)
		{
			$res->view = $this->View("no_data", "Fehler beim aufruf der Seite. Sollte dieser Fehler weiterhin bestehen wenden sich sich an den Administrator.");
			return $res;
		}
		
		if (!isset($_REQUEST["a_produkt"]) && $_REQUEST["a_produkt"] < 1)
		{
			$res->view = $this->View("no_data", "Fehler beim aufruf der Seite. Sollte dieser Fehler weiterhin bestehen wenden sich sich an den Administrator.");
			return $res;
		}
		
		
		$dao = new DAO_Angebote();
		$dao->ProduktEinfuegen($_REQUEST["a_produkt"], $_REQUEST["a_id"]);
		
		$this->RedirectTo("Angebot", "Detail", array("a_id" => $_REQUEST["a_id"]));
	}
	
	public function RemoveProduct()
	{
		$res = new ViewResponse();
		
		if (!isset($_REQUEST["a_id"]) && $_REQUEST["a_id"] < 1)
		{
			$res->view = $this->View("no_data", "Fehler beim aufruf der Seite. Sollte dieser Fehler weiterhin bestehen wenden sich sich an den Administrator.");
			return $res;
		}
		
		if (!isset($_REQUEST["a_produkt"]) && $_REQUEST["a_produkt"] < 1)
		{
			$res->view = $this->View("no_data", "Fehler beim aufruf der Seite. Sollte dieser Fehler weiterhin bestehen wenden sich sich an den Administrator.");
			return $res;
		}
		
		
		$dao = new DAO_Angebote();
		$dao->ProduktEntfernen($_REQUEST["a_produkt"], $_REQUEST["a_id"]);
		
		$this->RedirectTo("Angebot", "Detail", array("a_id" => $_REQUEST["a_id"]));
	}
	
}

?>